Skip to main content

CNSS 2025 Bin Guideline

🍌Bin Guideline

🚩简介

Bin 方向,也称二进制方向,主要是分析,利用二进制文件。主要方向分为注重于代码逻辑逆向的 Reverse (简称 Re ),和注重于程序漏洞利用的 Pwn 。尽管如此,二者也并非是分离的,Pwn 学习是需要一定逆向基础,逆向学好学 Pwn 也会事半功倍。建议学习 Pwn 之前先了解一下基础的 Re 知识。

🔍Reverse

Reverse,顾名思义,逆向。Re 选手会对题目的二进制运行文件进行逻辑分析与代码利用。在逆向工程中,它可以是分析木马病毒,加固你的杀毒软件,也可以是找到游戏数据在内存中的位置以实现作弊。在 CTF 中则是绕过坑和陷阱,找到隐藏的 flag。

对于不同的架构、平台和环境,逆向的体验和方法都有一些区别,因此对知识的广度有一定要求,但招新题设置的场景都比较友好,善用搜索引擎可以快速上手,是非常有趣且简单的方向,非常鼓励大家来尝试。

最后想说,Re 的学习还是需要做题目的经验。有时一份好的 Writeup (WP) 会比一本书带来的收获还要多,从 Writeup 中你收获的不仅仅有原来 flag 在这里 ,还有原来 flag 是这样找到的

💥Pwn

Pwn,通过逆向工程寻找和利用漏洞。其意义比较接近大家印象中的黑客,深挖服务器漏洞来夺取服务器的权限。CTF 中,题目往往会设置一个情景,模拟正常运行服务的服务器供 Pwn 选手攻破。

Pwn 的学习则是熟悉计算机漏洞与编写攻击脚本(称之为 exp)。和 Re 一样,它的学习也离不开经验的积累。Pwn 的学习需要兼顾深度和广度,需要对底层的深入认知,也需要阅尽千帆,识题百味。如果想简单的了解一下,可以先了解一下函数调用栈,再看看基础的栈溢出

阅读前人的 Writeup 是学习 Pwn 的重要手段,一份优秀的 Writeup 可以四两拨千斤,收到一点而通的效果。

最后想说,Pwn 选手往往是 CTF 中的中流砥柱,有了前期积累后 Pwn 的学习不再会像新手期那么难。希望大家不要被它所需的基础吓到,它是十分有趣的一个方向。

🦅学会了 Reverse / Pwn 后能干什么?

Reverse

  • 逆向软件,编写注册机,破解软件或是更改一些应用。
  • 外挂,病毒分析,都出自逆向工程。

Pwn

  • 发掘路由器,服务器漏洞,维护网络安全。
  • 代码审计,渗透测试,为计算机系统提供安全服务。

📚Bin 学习指北

✨总纲

做题,做题,做题,然后谷歌,然后再看书(同时可以适当借助一些AI来辅助理解)。一般而言,Re 前面的招新题是往往不需要基础也能做出来的环境题,请大家直接来做题。在解题过程中会帮助你熟悉和了解相关知识。当卡住或者困惑时,先尝试关键词检索。比如新人在动态调试方向一头雾水,可以先试试谷歌 “ctf re 动态调试”,再应用在解题中。CTF 是一门高度依赖于网络搜索的竞赛。

对于多而杂的二进制知识,吸收信息的速度和能力非常重要。做题的时间和看题解学习的比例应该在 1:3,切忌吊死在一道题上苦思冥想(坐牢)。一开始的学习可以直接看别人写的 WP,因为此时接触过的东西是全新的,不会就是不会,苦思冥想一整天不会有任何收获。个人博客、知乎、b站的视频和学长都是非常好的资源,最后才是啃书。如果看到 WP 里不会的知识点,要意识到这个地方的前置知识我没有掌握,需要递归的搜索下去,最后构建出成体系的知识树,这非常重要。

🛫基础

  • 语言基础

    如果是零基础编程小白的话,建议先从 C 语言开始学起。不用太过纠结现代语法和面向对象之类的东西,只需要了解偏底层原理的函数、指针等知识就够了,了解底层的原理才是最重要的。在 b 站上有许多自学教程视频,《C Primer Plus》也是不错的入门书。多多搜索,相信你能找到更适合你学习的资源。

    同时,了解一些 python 也是必要的,同样的不需要去深入了解那些高大上的功能,把它当作一个脚本语言快速入门就行了。(后面 IDA 或 pwn 会经常使用 python 来编写脚本)

    后续的题目会有诸如java或rust或go之类的现代语言出现,如果你感兴趣并相当有空也可以学学。

  • Linux基础

    尝试安装一个虚拟机,或者配置你的WSL。学习简单的Linux命令以及如何使用命令行工具。

  • 汇编语言

    大部分逆向分析最终还得回到汇编层面的分析,这里推荐汇编语言学习来快速入门,如果想更深入了解,可以看王爽的《汇编语言》。

  • CSAPP

    不管你之后在安全领域的学习是否深入,你都应该看看这本书。

  • 一些常用的工具软件

    • 各种笔记软件

      学会使用 markdown 来记录和整理你学过的东西,编写自己的 WP,搭建出属于你自己的技能树。

    • VS Code

      是一个强大的代码编辑器,里面有各种各样的插件。

    • IDA Pro

      IDA 是一个功能十分强大的可执行文件分析工具。是所有 Bin 选手必须接触的。不过无需担心不会使用,流程图设计和 Hex-Rays 插件大大降低了学习门槛。在后面也会有很多题会针对 IDA ,让它失效。不过这都是后话了。如果想看看在 CTF 中实际使用的样子,可以看看这个。(视频中很多操作适合有了C语言基础后重看,零基础的同学有一个感性认知即可)

    • Pwntool

      Pwntool 是 Pwn 题很重要的工具,也是 Pwn 方向的基础。哪怕作为一种正常工具它的功能也很强大。注意,学习 Pwntool 是需要一点点的 Python 基础的,不过不会很难。不建议新手一上来就去做 Pwn 的题目,还是有基础的语言&计组知识再来尝试。

    • GNU Debugger

      gdb 是泛用的动态调试工具,本体对初学者十分不友好(类似 TEX),可以考虑使用基于它的 distro,如*(善用搜索引擎)*。

重要

要注意的是,各个方向的知识是不可能学完的, 你需要在了解到相应基础知识的情况下付诸实践, 才能得到更好的效果。 因此 Bin 方向的书单、知识在前期不需要过于深入,有时在解题过程的问题 google 解决即可。

🥫资源

🧩FAQ

Guideline 真正的精华(超小声(

  • 做了这么多年学生,大家应该都能体会到,越是“高级”和“复杂”的知识,在学习过程中找到那种“体系感”才是关键,而这种体系感的获得只能依赖自主学习、读书和思考

  • 没有任何一条已走过的路真正适合你

  • 深度是你的上确界,广度是你的下确界

  • 相信你一定已经阅读了所有的 Guideline,谢谢

  • 如果你

    • 有什么问题实在无法解决
    • 有什么建设性意见

    ↓请猛击下方↓

🔨敲打负责人

@NonMirror @OOPS @cisc0LL @北大门淋雨